<html>
<head>
	<script type="text/javascript" src="library/MochiKit.js"></script>
	<script type="text/javascript" src="library/SimpleTest.js"></script>
	<link rel="stylesheet" type="text/css" href="library/test.css">
</head>
<body>
<pre id="test">
</pre>
<script type="text/javascript" src="../library/00_Components.js"></script>
<script type="text/javascript" src="../library/01_utility.js"></script>
<script type="text/javascript" src="../library/20_model.js"></script>
<script type="text/javascript">
try {
	// chrome://tombloo/content/test/test_model.html
	
	
	SimpleTest.waitForExplicitFinish();
	
	var d = succeed();
	
	/*
	.addBoth(function(res){
		console.log(res);
	})
	*/
	
	
	/*
	FriendFeed
	d.addCallback(function(){
		return FriendFeed.post({
			type        : 'photo',
			pageUrl     : 'http://www.goo.ne.jp/',
			page        : 'goo',
			itemUrl     : 'http://www.goo.ne.jp/img2/logo/gh_logo2.gif',
			description : 'ポータルサイト',
		});
	});
	*/
	
	
	/*
	// Instapaper
	d.addCallback(function(){
		return Instapaper.post({
			item        : 'goo',
			itemUrl     : 'http://dictionary.goo.ne.jp/',
			description : '辞書',
		});
	});
	*/
	
	
	/*
	// YahooBookmarks
	YahooBookmarks.post({
		pageUrl     : 'http://www.goo.ne.jp/',
		itemUrl     : 'http://dictionary.goo.ne.jp/',
		item        : 'goo',
		description : '今日のニュース',
		tags        : ['search', 'portal'],
		private     : true,
	});
	d.addCallback(function(){
		return YahooBookmarks.getUserTags();
	});
	d.addCallback(function(tags){
		log(tags);
		var tag = tags[0];
		ok(tag.name.length > 0, 'YahooBookmarks: タグの名前を取得できているか');
		ok(tag.frequency!=null, 'YahooBookmarks: タグの利用回数を取得できているか');
	});
	*/
	
	
	/*
	// Yahoo
	d.addCallback(function(){
		return Yahoo.getReadings('"写真","あとで読む"');
	}).addCallback(function(res){
		log(res.join(''));
	});
	*/
	
	
	/*
	// Kawa
	d.addCallback(function(){
		return Kawa.getReadings('"写真","あとで読む"');
	}).addCallback(function(res){
		log(res);
	});
	*/
	
	
	// Hatena
	/*
	d.addCallback(function(){
		return Hatena.login('user', 'password');
	});
	d.addCallback(function(){
		return Hatena.logout();
	});
	
	d.addCallback(function(){
		return Hatena.getCurrentUser();
	}).addCallback(function(user){
		ok(user);
	});
	*/
	ok(Hatena.getPasswords().length, 'Hatena: アカウント情報を取得できているか');
	
	
	/*
	// HatenaBookmark
	d.addCallback(bind('getUserTags', HatenaBookmark));;
	d.addCallback(function(tags){
		var tag = tags[0];
		ok(tag.name.length > 0, 'HatenaBookmark: タグの名前を取得できているか');
		ok(tag.frequency!=null, 'HatenaBookmark: タグの利用回数を取得できているか');
	});
	
	d.addCallback(bind('getToken', HatenaBookmark));
	d.addCallback(function(token){
		ok(token, 'HatenaBookmark: トークン取得');
	});
	
	d.addCallback(bind('post', HatenaBookmark), {
		itemUrl     : 'http://dictionary.goo.ne.jp/',
		description : '辞書',
		tags        : ['search', 'portal'],
	});
	d.addCallback(function(){
		ok(true, 'HatenaBookmark: 追加');
	});
	*/
	
	
	/*
	// HatenaStar
	d.addCallback(function(){
		return HatenaStar.post({
			pageUrl     : 'http://www.goo.ne.jp/',
			itemUrl     : 'http://dictionary.goo.ne.jp/',
			item        : 'goo',
			description : '今日のニュース',
		});
	})
	d.addCallback(function(){
		return HatenaStar.remove({
			itemUrl     : 'http://dictionary.goo.ne.jp/',
			description : '今日のニュース',
		});
	})
	*/
	
	
	/*
	// GoogleBookmarks
	d.addCallback(function(){
		return GoogleBookmarks.post({
			itemUrl     : 'http://www.goo.ne.jp/',
			item        : 'goo',
			description : 'ポータルサイト',
			tags        : ['search', 'portal'],
		});
	})
	*/
	
	
	/*
	// Twitter
	Twitter.getToken();
	d.addCallback(function(){
		return Twitter.addFavorite(808614559);
	});
	d.addCallback(function(){
		return Twitter.post({
			itemUrl     : 'http://www.goo.ne.jp/',
			item        : 'goo',
			description : 'ポータルサイト',
		});
	});
	d.addCallback(function(){
		return Twitter.remove(847473592);
	});
	*/
	
	
	/*
	// Delicious
	d.addCallback(function(){
		return Delicious.post({
			itemUrl     : 'http://www.goo.ne.jp/',
			item        : 'goo',
			description : 'ポータルサイト',
			tags        : ['search', 'portal'],
			private     : true,
		});
	});
	
	d.addCallback(bind('getUserTags', Delicious));;
	d.addCallback(function(tags){
		var tag = tags[0];
		ok(tag.name.length > 0, 'Delicious: タグの名前を取得できているか');
		ok(tag.frequency!=null, 'Delicious: タグの利用回数を取得できているか');
	});
	*/
	ok(Delicious.getCurrentUser().length > 1);
	
	
	/*
	// GoogleWebHistory
	d.addCallback(bind('post', GoogleWebHistory), 'http://google.com/');
	d.addCallback(function(){
		ok(true, 'GoogleWebHistory: 追加');
	});
	*/
	is(GoogleWebHistory.getCh('http://google.com'), '6-1226505498');
	
	
	/*
	// Flickr
	d.addCallback(bind('addFavorite', Flickr), 2371304094);
	d.addCallback(function(){
		ok(true, 'Flickr Favorite 追加');
	});
	
	d.addCallback(bind('removeFavorite', Flickr), 2371304094);
	d.addCallback(function(){
		ok(true, 'Flickr Favorite 削除');
	});
	
	
	d.addCallback(bind('getInfo', Flickr), 2052869076);
	d.addCallback(function(info){
		is(info.title._content, 'Mya');
		is(info.owner.username, 'Ben Pearce');
		is(info.id,             '2052869076');
		is(info.owner.nsid,     '14227047@N05');
		is(info.originalsecret, 'a02938d5af');
		is(info.secret,         'd7852e1a0b');
		is(info.server,         '2106');
		
		is(info.urls.url[0].type,     'photopage');
		is(info.urls.url[0]._content, 'http://www.flickr.com/photos/benpearce/2052869076/');
	});
	d.addCallback(bind('getSizes', Flickr), 2052869076);
	d.addCallback(function(sizes){
		is(sizes.length, 5);
		is(sizes[0].height, 75);
		is(sizes[0].width, 75);
		is(sizes[0].label,  'Square');
		is(sizes[0].source, 'http://farm3.static.flickr.com/2106/2052869076_d7852e1a0b_s.jpg');
		is(sizes[0].url,    'http://www.flickr.com/photos/benpearce/2052869076/sizes/sq/');
	});
	d.addCallback(bind('getSizes', Flickr), 2150907410);
	d.addErrback(function(e){
		is(e.message, 'Photo not found');
	});
	*/
	
	
	/*
	// FFFFOUND
	d.addCallback(bind('getToken', FFFFOUND));
	d.addCallback(function(token){
		ok(token);
	});
	
	d.addCallback(bind('post', FFFFOUND), {
		item    : 'はてな',
		itemUrl : 'http://www.hatena.ne.jp/images/top/navi_icon.gif',
		pageUrl : 'http://www.hatena.ne.jp/',
	}).addCallbacks(partial(ok, false), function(e){
		log(e);
		is(e.message, 'The image you choose is too small.', 'ポスト失敗: 画像小さい')
	});
	d.addCallback(bind('post', FFFFOUND), {
		item    : 'はてな',
		itemUrl : 'http://www.hatena.ne.jp/',
		pageUrl : 'http://www.hatena.ne.jp/',
	}).addCallbacks(partial(ok, false), function(e){
		is(e.message, 'UNSUPPORTED_TYPE', 'ポスト失敗: サポート外のタイプ')
	});
	
	d.addCallback(bind('post', FFFFOUND), {
		item    : 'Mya',
		itemUrl : 'http://farm3.static.flickr.com/2106/2052869076_a02938d5af_o.jpg',
		pageUrl : 'http://www.flickr.com/photos/benpearce/2052869076/sizes/o/',
	});
	
	d.addCallback(bind('remove', FFFFOUND), 159182);
	
	d.addCallback(bind('iLoveThis', FFFFOUND), 159322);
	d.addCallback(bind('iLoveThis', FFFFOUND), 159322).addCallbacks(
		partial(ok, false), 
		function(e){
			is(e.message, 'EXISTS', 'ポスト失敗: 重複')
		});
	
	d.addCallback(bind('getItem', Amazon), '4894716933');
	d.addCallback(function(item){
		log(item);
		is(item.title, 'アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)')
		is(item.creators.join(), '堀内 一,友野 晶夫,児玉 公信,大脇 文雄')
		is(item.largestImage.size, 'large')
		is(item.largestImage.width, 367)
		is(item.largestImage.height, 475)
		is(item.largestImage.url, 'http://ecx.images-amazon.com/images/I/51TJA4VW1GL.jpg')
	});
	*/
	
	
	/*
	Wassr
	d.addCallback(function(){
		return Wassr.post({
			itemUrl     : 'http://www.goo.ne.jp/',
			item        : 'goo',
			description : 'ポータルサイト',
		});
	});
	*/
	
	
	d.addErrback(function(e){
		error(e.message);
		ok(false, '遅延テストエラー');
	});
	d.addBoth(function(){
		SimpleTest.finish()
	});
} catch (err) {
	var s = [];
	s.push('TEST SUITE FAILURE!');
	for(var prop in err)
		s.push(prop + ':  ' + err[prop]);
	ok(false, s.join('\n'));
}
</script>

</body>
</html>
